#include <iostream>
#include <string>
#include <iomanip>

using namespace std;
typedef wchar_t unicode_char;

struct Unicode_info
{
    unicode_char begin, end;
    string what;
}U_info[] = {
    {0x0000, 0x007F, "ASCII"},
    {0x0080, 0x00FF, "Latin1 characters 0400-04FF Cyrillic "},
    {0x0100, 0x017F, "European Latin 0530-058F Armenian"},
    {0x0180, 0x01FF, "Extended Latin 0590-05FF Hebrew"},
    {0x0250, 0x02AF, "Standard phonetic 0600-06FF Arabic"},    
    {0x02B0, 0x02FF, "Modified letters 0900-097F Devanagari"},
    {0x0300, 0x036F, "Generic diacritical marks"},
    {0x0400, 0x04FF, "Cyrillic"},
    {0x0530, 0x058F, "Armenian"},
    {0x0590, 0x05FF, "Hebrew"},
    {0x0600, 0x06FF, "Arabic"},
    {0x0900, 0x097F, "Devanagari"}
};

    
    
int main()
{
    int size = sizeof(U_info)/sizeof(Unicode_info);
    long sum = 0;
    for( int i = 0 ; i < size; ++i){
        long s = U_info[i].end - U_info[i].begin;
        cout << setw(10) << s  << " " << U_info[i].what << endl;
        sum += s;
    }
    cout << "Sum = " << sum << endl;
    return 0;
}
